
/**
 * \file SDlJeu.h
 * \brief Module d'IHM en mode graphique
 * \author Carrillon Sovanna
 * \version 1.0
 * \date juin 2011
 */

#ifndef SDL_JEU_H
#define SDL_JEU_H

#include <SDL/SDL.h>

#include "Jeu.h"

/* pour ne pas surcharger les notations qui deviennent illisibles, les pointeurs de la structure SDLJeu le comportent pas le "p_" */

/**
  * \struct SDLJeu
  * \brief Contient le jeu et toutes les Surfaces pour les images
  */
struct s_SDLJeu
	{
		Jeu jeu;

		SDL_Surface* surf_ecran;
		SDL_Surface* surf_ecran_centre;

		SDL_Surface* surf_barre_infos;
		SDL_Surface* surf_zone;

		SDL_Surface* surf_link[4][8]; /** tableau de plusieurs pointeurs sur surface : 4 lignes : une pour chaque direction, 8 colonnes pour les mouvements */

		SDL_Surface* surf_monstre[10][4][3]; /** tableau de plusieurs pointeurs sur surface : 10 catégories de monstres différents, 4 lignes : une pour chaque direction, 3 colonnes pour les mouvements */
        SDL_Surface* surf_monstre_boule;

        SDL_Surface* surf_sol[30];
        SDL_Surface* surf_mur[60]; /* 60 types de murs pour l'instant */

        SDL_Surface* surf_coeur[2]; /*coeur plein en case 0 et coeur vide en case 1*/ /* coeur vide inutilisé pour l'instant car pas de limite au nombre de coeurs...*/

		SDL_Surface* surf_objets[10];

	};
typedef struct s_SDLJeu SDLJeu;


/**
  * \brief Initialise un SDLJeu, c'est à dire initialise SDL en mode video et charge toutes les images
  * \param [in,out] p_sdl_jeu : pointeur sur le SDLJeu à initialiser
  */
void sdlJeuInit(SDLJeu* p_sdl_jeu);

/**
  * \brief Boucle d'évènements qui lance le jeu et gère les interactions avec le joueur
  * \param [in,out] p_jeu : pointeur sur le SDLJeu
  */
void sdlJeuBoucle(SDLJeu* p_sdl_jeu);

/**
  * \brief Libère un SDLJeu, c'est à dire libère toutes les surfaces
  * \param [in,out] p_jeu : pointeur sur le SDLJeu
  */
void sdlJeuLibere(SDLJeu* p_sdl_jeu);

/**
  * \brief Boucle d'évènements qui lance le jeu et gère les interactions avec le joueur
  * \param [in,out] p_jeu : pointeur sur le jeu à initialiser
  */
void sdlJeuDetruit(SDLJeu* p_sdl_jeu);

#endif /* SDL_JEU_H */
